# encoding=utf-8
# Ver 3 -d2 -f1
## 数据库版本升级
# Ver 2 -d1 -f1
## 更改函数接口参数
# 1
import sqlite3
import os
def BackupDb(fnSource, fnDest):
    return _BackupDb1(fnSource, fnDest)

def _BackupDb1(fnSource, fnDest):
    if not os.path.exists(fnSource):
        print('文件 %s 不存在，请检查文件路径' %fnSource)
        return False
    if os.path.exists(fnDest):
        print('文件 %s 已存在，请删除或重命名此文件' % fnDest)
        return False
    oconn = sqlite3.connect(fnSource)
    oconn.text_factory = str 
    oCursor = oconn.cursor()
    nconn = sqlite3.connect(fnDest)
    nconn.text_factory = str 
    nconn.execute('CREATE TABLE CONFIG(VERSION INTEGER)')
    print('创建数据库...')
    nconn.execute('CREATE TABLE Artists(ID INTEGER PRIMARY KEY, Name VARCHER(25) UNIQUE)')
    nconn.execute('CREATE TABLE Pictures(FileID VARCHAR(64) PRIMARY KEY, ArtistID INTEGER, FileNameID INTEGER)')
    nCursor = nconn.cursor()
    print('往备份数据库写入配置信息...')
    nCursor.execute('INSERT INTO CONFIG(VERSION) VALUES(%d)' % 2)
    print('读取原数据库数据1...')
    oCursor.execute('SELECT Name FROM Artists')
    res = oCursor.fetchall()
    for row in res:
        nCursor.execute('INSERT INTO Artists(Name) VALUES("%s")' % row[0])
    print('往备份数据库写入数据1...')
    nconn.commit()
    print('读取原数据库数据2...')
    oCursor.execute('SELECT * FROM Pictures')
    res = oCursor.fetchall()
    for row in res:
        nCursor.execute('INSERT INTO Pictures(FileID, ArtistID, FileNameID) VALUES("%s", %d, %d)' % (row[0], row[1], row[2]))
    print('往备份数据库写入数据库2...')
    nconn.commit()
    oCursor.close()
    nCursor.close()
    oconn.close()
    nconn.close()
    return True
